package cn.hss.string;

import java.util.Scanner;

/**键盘录入一个字符串，统计该字符串中大写字母字符，
 * 小写字母字符，数字字符出现的次数(不考虑其他字符)
 * @author 作者：HeShaoShuai
 * @Email 邮箱：2569819541@qq.com
 * @Date 日期：2023/4/25 20:12
 * @Package 包名：cn.hss.string
 * @Project 项目名：JavaSE
 * @Version 1.0
 */
public class StringCount {
	public static void main(String[] args) {
		//1.键盘录入一个字符串
		Scanner sca = new Scanner(System.in);
		System.out.println("请输入字符串：");
		String str = sca.next();
		//charCount(str);
		regExpCount(str);
	}
	//按要求统计字符出现的次数
	public static void charCount(String s){
		//定义临时变量
		int bigCount = 0;
		int smallCount = 0;
		int numberCount = 0;
		//遍历
		for(int i=0;i<s.length();i++){
			char c = s.charAt(i);
			//使用Character类的方法对字符进行判断
			if(Character.isUpperCase(c)){//判断字符是否为大写
				bigCount++;
			}else if(Character.isLowerCase(c)){//判断字符是否为小写
				smallCount++;
			}else if(Character.isDigit(c)){//判断字符是否为数字
				numberCount++;
			}
			//对字符进行判断
//            if(c >= 'A' && c <= 'Z'){
//                bigCount++;
//            }else if(c >= 'a' && c <= 'z'){
//                smallCount++;
//            }else if(c >= '0' && c <= '9'){
//                numberCount++;
//            }
		}
		System.out.println("大写字符有："+bigCount);
		System.out.println("小写字符有："+smallCount);
		System.out.println("数字字符有："+numberCount);
	}
	//使用正则表达式按要求统计字符出现的次数
	public static void regExpCount(String str){
		//纯大写字符
		final String BIG_CHAR = "[A-Z]{1,}$";
		//纯小写字符
		final String LOWER_CHAR = "[a-z]{1,}$";
		//纯数字字符
		final String NUMBER_CHAR = "[0-9]{1,}$";
		//定义临时变量
		int bigCount=0;
		int smallCount=0;
		int numberCount=0;
		//String s="HaosLP823";
		//遍历
		for(int i=0;i<str.length();i++) {
			char c = str.charAt(i);
			String str1 = Character.toString(c);
			//使用正则表达式对字符进行判断
			if (str1.matches(BIG_CHAR)) {//判断字符是否为大写
				bigCount++;
			} else if (str1.matches(LOWER_CHAR)) {//判断字符是否为小写
				smallCount++;
			} else if (str1.matches(NUMBER_CHAR)) {//判断字符是否为数字
				numberCount++;
			}
		}
		System.out.println("大写字符有："+bigCount);
		System.out.println("小写字符有："+smallCount);
		System.out.println("数字字符有："+numberCount);
	}
}
